1. Field of the Invention
This invention is related to the fields of: computing machines; parallel processing; parallel computing; multiple thread program execution; the computer language Cobol; the computer languages JAVA, C/C++ and Fortran; computer program compilers; computer languages, and other closely related computer art.
2. Description of the Related Art
The Cobol language may be considered a less popular and probably a less “modern” language than the “C”, “C++”, or “JAVA” languages. Compilers for the more “modern” languages are under constant development and improvement by several large companies and in the open source community and these compilers are available for a wide variety of computing hardware platforms. Although the Cobol language is by no means “dead”, Cobol compilers are not currently under active development in the computer industry and the optimization of machine code for programs written in Cobol may not be as advanced or as good as optimizations produced for the other above mentioned languages.
The Cobol language is also sometimes regarded as being too “verbose” and some programmers do not like to use it in development of new programs.
Another problem is that the Cobol language is often not well known by many programmers who are more accustomed to using “C”, “C++” or “JAVA”. The Cobol language is not taught in some colleges or universities, even those that may specialize in computer science, and so a newly educated person in the programming industry may not be trained in Cobol.
Compilers for programs written in the Cobol language may also be less portable or not as well maintained in comparison to compilers for programs written in C, C++ or JAVA. This is because the generation of machine instructions by a compiler for a variety of hardware platforms requires customization of the generated code for each hardware platform, and writing compiler code generators to produce code for alternative platforms may not be worth the investment in time and effort for the companies which provide Cobol compilers.
In general, the Cobol language may also be viewed as not having “kept up with the times” in terms of providing certain features for advance programming concepts, although Cobol is widely used and standardization efforts continue. For example, the Cobol language and its known compilers do not include support for parallelization using the OpenMP standard which is provided for Fortran and C/C++ compilers. (OpenMP description can be found online at OpenMP.org and on the website the standard is described as a “defacto standard”. OpenMP 3.1 specification was released in July 2011 in PDF form on this website).
One prior art approach that has been used to overcome or for partially overcoming one or more of the above such problems is by the development of a Cobol compiler called “OpenCobol”, which has also been used as a basis for a more commercialized Cobol compiler called Cobol-IT. The approach of “OpenCobol” is to translate using a first compiler, an input Cobol source program into an output program which is a “C” program, and then to use a second compiler, a “C” compiler, to compile the “C” program to produce an executable machine program. “C” compilers are widely available on almost every significant computing platform, and so the use of a “C” compiler as the mechanism for producing machine code for each hardware platform makes the overall approach quite portable, and may also provide for a higher level of optimization of generated machine code.
It should be noted that the “C” code produced by the OpenCobol compiler is not very “readable” by a programmer since the “C” code is at a very low level and thus may not use variable names that are related to variable names included in the original Cobol source.
It is desirable to provide a Cobol compiler that produces code that is portable to various hardware platforms, and to produce code that is reliable. It is also desirable to allow for modifying Cobol programs in a way that allows for enhancing or modifying existing Cobol programs, possibly without requiring that the source code for those changes be in the Cobol language itself.
Programmers often prefer one computer language over another and some computer languages may be “better” than other languages for implementing certain algorithms or types of programming. It may also be true that a programmer may simply have a more thorough understanding of one language over another, and therefore can work more efficiently in one language rather than another.